﻿using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;
using System.Web.Script.Serialization;
using System.Web;
using System.Net;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Text;
using Newtonsoft.Json.Linq;
using Newtonsoft.Json;
using System.IO;
using System.Linq;
using WebApplication1.MSG;
namespace WebApplication1
{
    public partial class c : System.Web.UI.Page
    {
        string EQID = "wx000000";
        string un = "";
        string uid = "";
        string tokenValue="";
        protected void Page_Load(object sender, EventArgs e)
        {
            

                try
                {
                    //1.微信主页判断是否存在Cookie信息，如果存在则不需要再次验证
                    //2.如果不存在，则跳转到微信OAuth统一认证页面认证，之后到此页面获取用户信息存入Cookie返回主页
                    //3.获取Code,此code只能使用一次。
                    string code = Request["code"];

                    //4.根据企业ID:XX,Secret:XXX,获取token
                    string accessTokenUrl = "https://qyapi.weixin.qq.com/cgi-bin/gettoken";
                    string accessTokenResult = HttpGet(accessTokenUrl, "corpid=wx8579b2dae40753d2&corpsecret=JjVqfS47AEc9Z9UHhDvksIGZ_YPgW6Wjo80jGOTxKX8m8yn4VoHDaxRXJI43dIa5");
                    JavaScriptSerializer js = new JavaScriptSerializer();
                    token mytoken = js.Deserialize<token>(accessTokenResult);
                     tokenValue = mytoken.access_token;

            
                    //5.获取UserInfo,包含userId
                    string userinfoUrl = "https://qyapi.weixin.qq.com/cgi-bin/user/getuserinfo";
                    string userinfojson = HttpGet(userinfoUrl, "access_token=" + tokenValue + "&code=" + code);
                    userinfo userinfo1 = js.Deserialize<userinfo>(userinfojson);
                    string UserId = userinfo1.UserId;


                    //6.根据userId获取通讯录中用户的详细信息
                    string userinfodetailURL = "https://qyapi.weixin.qq.com/cgi-bin/user/get";
                    string userinfodetailResult = HttpGet(userinfodetailURL, "access_token=" + tokenValue + "&userid=" + UserId);
                    // JObject jObject = (JObject)JsonConvert.DeserializeObject(userinfodetailResult);
                    // JObject ja = (JObject)JsonConvert.DeserializeObject(jObject["extattr"].ToString());
                    // JObject ja2 = (JObject)JsonConvert.DeserializeObject(jObject["mobile"].ToString());
                    // JArray jObject1 = (JArray)JsonConvert.DeserializeObject(ja["attrs"].ToString());
                    //txtReturn2.Text = ja[0]["MainOrganization"].ToString();

                    //测试结果
                    //Response.Write("1:token:" + accessTokenResult + "<br/>2:tokenValue:" + tokenValue + "<br/>3:code:" + code + "<br/>4:userinfojson:" + userinfojson + "<br/>5.UserId:" + UserId + "<br/>6.userinfodetailResult:" + userinfodetailResult + "<br/>7:数组：" + jObject1[0]["value"].ToString());

                    //7.将Guid存入cookie


                    //string userguid = jObject1[0]["value"].ToString();
                    // Response.Cookies["UserGuid"].Value = userguid;
                    // Response.Cookies["UserGuid"].Expires = DateTime.Now.AddDays(1);



                    string[] sArray = userinfodetailResult.Split(new string[] { "mobile", "gender" }, StringSplitOptions.RemoveEmptyEntries);
                    string[] sArray2 = userinfodetailResult.Split(new string[] { "name", "department" }, StringSplitOptions.RemoveEmptyEntries);
                    string[] sArray3 = userinfodetailResult.Split(new string[] { "userid", "name" }, StringSplitOptions.RemoveEmptyEntries);



                    uid = sArray3[1];
                    uid = uid.Replace("\"", "");
                    uid = uid.Replace(":", "");
                    uid = uid.Replace(",", "");

                    un = sArray2[1];
                    un = un.Replace("\"", "");
                    un = un.Replace(":", "");
                    un = un.Replace(",", "");

                    string str = sArray[1];
                    str = str.Replace("\"", "");
                    str = str.Replace(":", "");
                    str = str.Replace(",", "");
                   // Label1.Text = str;
                    Response.Cookies["UserPhone"].Value = str;
                    Response.Cookies["Cname"].Value = un;
                    Response.Cookies["UserID"].Value = uid;

                

                   

                }
                catch (Exception ex)
                {
                    //TODO 处理异常

                }
            

    
    }
     public string HttpGet(string Url, string postDataStr)
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url + (postDataStr == "" ? "" : "?") + postDataStr);
            request.Method = "GET";
            request.ContentType = "text/html;charset=UTF-8";
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            Stream myResponseStream = response.GetResponseStream();
            StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));
            string retString = myStreamReader.ReadToEnd();
            myStreamReader.Close();
            myResponseStream.Close();
            return retString;
        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            string TSKflag = Guid.NewGuid().ToString();
            //Response.Redirect("http://cmu.lichuanjia.cn/Add_RP_No_Code.aspx?i=" + EQID + "&tflag=" + TSKflag + "&Cname=" + Label1.Text + "&userid=" + Label2.Text + "&userphone=" + Request.Cookies["UserPhone"].Value.ToString(), false);

           // Response.Redirect("http://cmu.lichuanjia.cn/Add_RP_No_Code.aspx?phone=" + Request.Cookies["UserPhone"].Value.ToString(), false);
            //Response.Redirect("http://cmu.lichuanjia.cn/Add_RP_No_Code.aspx", false);
            string httpUrl =
                "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx8579b2dae40753d2&redirect_uri=http://cmu.lichuanjia.cn/Add_RP_No_Code.aspx?eqid="+"wx000000"+"&response_type=code&scope=snsapi_base&state=";
            Response.Redirect(httpUrl); Response.Redirect(httpUrl);
        
        }

        protected void Button2_Click(object sender, EventArgs e)
        {



            string TSKflag = Guid.NewGuid().ToString();
            Response.Redirect("http://www.cmuam.site/inputcode.aspx", false);
        }
        protected void Button3_Click(object sender, EventArgs e)
        {



            string TSKflag = Guid.NewGuid().ToString();
            Response.Redirect("http://www.cmuam.site/Task_List_Caller.aspx", false);
        }
        protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
        {

        }
 public class userinfo
    {
        public string UserId { get; set; }
        public string DeviceId { get; set; }
    }

    public class token
    {

        public string access_token { get; set; }
        public int expires_in { get; set; }

    }





    public string PostWebRequest(string postUrl, string paramData, Encoding dataEncode)
    {
        string ret = string.Empty;
        try
        {
            byte[] byteArray = dataEncode.GetBytes(paramData); //转化
            HttpWebRequest webReq = (HttpWebRequest)WebRequest.Create(new Uri(postUrl));
            webReq.Method = "POST";
            webReq.ContentType = "application/x-www-form-urlencoded";

            webReq.ContentLength = byteArray.Length;
            Stream newStream = webReq.GetRequestStream();
            newStream.Write(byteArray, 0, byteArray.Length);//写入参数
            newStream.Close();
            HttpWebResponse response = (HttpWebResponse)webReq.GetResponse();
            StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.Default);
            ret = sr.ReadToEnd();
            sr.Close();
            response.Close();
            newStream.Close();
        }
        catch (Exception ex)
        {
            return ex.Message;
        }
        return ret;
    }












    public string SendQYMessage(string corpid, string corpsecret, string paramData, Encoding dataEncode)
    {
        
        string postUrl = string.Format("https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token={0}", tokenValue);

        return PostWebRequest(postUrl, paramData, dataEncode);
    }

    protected void Button4_Click(object sender, EventArgs e)
    {
        Response.Redirect("http://cmu.lichuanjia.cn/JSSDKTest.aspx", false);
    }

    protected void Button5_Click(object sender, EventArgs e)
    {
        Response.Redirect("http://www.cmuam.site/Task_UnEva_List.aspx", false);
    }








    }
}
